import { createApp } from 'vue'
import App from './App.vue'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
//@ts-expect-error忽略当前文件ts类型的检测否则有红色提示(打包会失败)
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
import 'virtual:svg-icons-register'
import InstallUtil from '@/components'
import '@/styles/index.scss'
import router from '@/router'
import { createPinia } from 'pinia'
import '@/config/globalRoutingGuard.ts'
import 'nprogress/nprogress.css'
import 'element-plus/theme-chalk/dark/css-vars.css'

// pinia
const pinia = createPinia()
// 因为状态管理使用的是setup的方式构建所以我们重写一个$reset并挂载到pinia中
pinia.use(({ store }) => {
  const initialState = JSON.parse(JSON.stringify(store.$state))
  store.$reset = () => {
    store.$patch(initialState)
  }
})

const app = createApp(App)

// 注册pinia
app.use(pinia)
// 注册ElementPlus插件
app.use(ElementPlus, {
  locale: zhCn,
})

// 注册自定义插件，插件中会配置一些全局组件，便于使用
app.use(new InstallUtil())
// 注册路由器
app.use(router)
//引入自定义指令文件
import { isHasButton } from '@/directive/has'
isHasButton(app)
app.mount('#app')

// console.log('@@@@@', import.meta.env.VITE_APP_TITLE);
